// Webpack loader 用于替换 Markdown 文件中的环境变量占位符

module.exports = function (source) {
  // 获取 loader 选项 (Webpack 5+ 原生 API)
  const options = this.getOptions() || {};

  if (!options.replacements) {
    return source;
  }

  let result = source;
  let hasReplacements = false;

  // 替换所有的占位符（仅处理 {{xxx}} 格式，其中 xxx 是英文字母）
  Object.keys(options.replacements).forEach((placeholder) => {
    const value = options.replacements[placeholder];

    const regex = new RegExp(`\\{\\{${placeholder}\\}\\}`, 'g');

    // 检查是否有匹配的占位符
    if (regex.test(result)) {
      hasReplacements = true;
      // 重置正则表达式的 lastIndex
      regex.lastIndex = 0;
      result = result.replace(regex, value || '');
    }
  });

  // 如果进行了替换，输出调试信息（仅在开发模式下）
  if (hasReplacements && process.env.NODE_ENV === 'development') {
    // console.log(`[env-replacement-loader] 已处理文件: ${this.resourcePath}`);
  }

  return result;
};

// 标记为原始 loader，处理字符串内容
module.exports.raw = false;
